package logger

import (
	"io"
	"os"

	"github.com/sirupsen/logrus"
)

const (
	timeformat = "2006-01-02 15:04:05.000000000"
)

// InitLogger 初始化日志配置
func InitLogger(logfile string, level logrus.Level) {
	logrus.SetFormatter(&logrus.JSONFormatter{
		TimestampFormat: timeformat,
	})
	// 可以设置更多日志相关配置，比如日志级别等，这里设置为InfoLevel
	logrus.SetLevel(level)

	// 创建或打开指定的日志文件，以追加模式写入
	file, err := os.OpenFile(logfile, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0755)
	if err != nil {
		logrus.Fatalf("Error opening log file: %s, %s", logfile, err.Error())
	}
	//创建多个输出目标的writer,同时吸入文件和标准输出
	multiWriter := io.MultiWriter(file, os.Stdout)

	// 将日志输出设置为指定的文件
	logrus.SetOutput(multiWriter)

	// 添加自定义的CallerHook，用于记录函数、行号等信息
	logrus.AddHook(&CallerHook{})
}

// Info 记录Info级别的日志信息
func Info(args ...interface{}) {
	logrus.Info(args...)
}

func Infof(format string, args ...interface{}) {
	logrus.Infof(format, args...)
}

// Warning 记录Error级别的日志信息
func Warning(args ...interface{}) {
	logrus.Warn(args...)
}
func Warningf(format string, args ...interface{}) {
	logrus.Warnf(format, args...)
}

// Error 记录Error级别的日志信息
func Error(args ...interface{}) {
	logrus.Error(args...)
}
func Errorf(format string, args ...interface{}) {
	logrus.Errorf(format, args...)
}

// Debug 记录Debug级别的日志信息（如果日志级别设置为Debug及以下会输出）
func Debug(args ...interface{}) {
	logrus.Debug(args...)
}

func Debugf(format string, args ...interface{}) {
	logrus.Debugf(format, args...)
}
